package co.edu.usbcali.rebio.dataaccess.daoFactory;

import co.edu.usbcali.rebio.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IRebAgenteBiologicoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebAgenteBiologicoDAO implementation
    */
    public IRebAgenteBiologicoDAO getRebAgenteBiologicoDAO() {
        return new RebAgenteBiologicoDAO();
    }

    /**
    * This method instantiates the IRebAgentesTratamientoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebAgentesTratamientoDAO implementation
    */
    public IRebAgentesTratamientoDAO getRebAgentesTratamientoDAO() {
        return new RebAgentesTratamientoDAO();
    }

    /**
    * This method instantiates the IRebClienteDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebClienteDAO implementation
    */
    public IRebClienteDAO getRebClienteDAO() {
        return new RebClienteDAO();
    }

    /**
    * This method instantiates the IRebDepartamentoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebDepartamentoDAO implementation
    */
    public IRebDepartamentoDAO getRebDepartamentoDAO() {
        return new RebDepartamentoDAO();
    }

    /**
    * This method instantiates the IRebFechasTratamientoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebFechasTratamientoDAO implementation
    */
    public IRebFechasTratamientoDAO getRebFechasTratamientoDAO() {
        return new RebFechasTratamientoDAO();
    }

    /**
    * This method instantiates the IRebHaciendaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebHaciendaDAO implementation
    */
    public IRebHaciendaDAO getRebHaciendaDAO() {
        return new RebHaciendaDAO();
    }

    /**
    * This method instantiates the IRebIngenioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebIngenioDAO implementation
    */
    public IRebIngenioDAO getRebIngenioDAO() {
        return new RebIngenioDAO();
    }

    /**
    * This method instantiates the IRebMunicipioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebMunicipioDAO implementation
    */
    public IRebMunicipioDAO getRebMunicipioDAO() {
        return new RebMunicipioDAO();
    }

    /**
    * This method instantiates the IRebSuerteDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebSuerteDAO implementation
    */
    public IRebSuerteDAO getRebSuerteDAO() {
        return new RebSuerteDAO();
    }

    /**
    * This method instantiates the IRebTipoClienteDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebTipoClienteDAO implementation
    */
    public IRebTipoClienteDAO getRebTipoClienteDAO() {
        return new RebTipoClienteDAO();
    }

    /**
    * This method instantiates the IRebTrataminetoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebTrataminetoDAO implementation
    */
    public IRebTrataminetoDAO getRebTrataminetoDAO() {
        return new RebTrataminetoDAO();
    }

    /**
    * This method instantiates the IRebVariedadDeCanaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebVariedadDeCanaDAO implementation
    */
    public IRebVariedadDeCanaDAO getRebVariedadDeCanaDAO() {
        return new RebVariedadDeCanaDAO();
    }

    /**
    * This method instantiates the IRebVeredaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRebVeredaDAO implementation
    */
    public IRebVeredaDAO getRebVeredaDAO() {
        return new RebVeredaDAO();
    }
}
